// class UploadVideoCommand extends Command {
//   constructor(editor) {
//     super(editor);
//     this.attributeKey = 'uploadVideo';
//   }

//   // refresh() {
//   //   const model = this.editor.model;
//   //   const selection = model.document.selection;

//   //   // 如果选中的文本含有 bold 属性，设置 value 为 true，
//   //   // 由于已在 toolbar-ui 中关联，当 value 为 true 时会高亮工具栏按钮
//   //   this.value = this._getValueFromFirstAllowedNode();

//   //   // 校验选中的 Schema 是否允许 bold 属性，若不允许则禁用按钮
//   //   this.isEnabled = model.schema.checkAttributeInSelection(
//   //     selection,
//   //     this.attributeKey
//   //   );
//   // }

//   execute() {
//     const model = this.editor.model;
//     const selection = model.document.selection;

//     const value = !this.value;

//     // 对选中文本设置 bold 属性
//     model.change((writer) => {
//       if (selection.isCollapsed) {
//         if (value) {
//           writer.setSelectionAttribute(this.attributeKey, true);
//         } else {
//           writer.removeSelectionAttribute(this.attributeKey);
//         }
//       } else {
//         const ranges = model.schema.getValidRanges(
//           selection.getRanges(),
//           this.attributeKey
//         );

//         for (const range of ranges) {
//           if (value) {
//             writer.setAttribute(this.attributeKey, value, range);
//           } else {
//             writer.removeAttribute(this.attributeKey, range);
//           }
//         }
//       }
//     });
//   }

//   _getValueFromFirstAllowedNode() {
//     const model = this.editor.model;
//     const schema = model.schema;
//     const selection = model.document.selection;

//     // 选区的锚点和焦点是否位于同一位置
//     if (selection.isCollapsed) {
//       return selection.hasAttribute(this.attributeKey);
//     }

//     for (const range of selection.getRanges()) {
//       for (const item of range.getItems()) {
//         if (schema.checkAttribute(item, this.attributeKey)) {
//           return item.hasAttribute(this.attributeKey);
//         }
//       }
//     }

//     return false;
//   }
// }




// class UploadVideo extends Plugin {
//   init() {
//     const editor = this.editor;

//     const schema = this.editor.model.schema;
//     const selection = editor.model.document.selection;


//     const conversion = this.editor.conversion;
//     this._defineSchema()
//     this._defineConverters();

//     editor.ui.componentFactory.add('uploadVideo', () => {
//       // Button-related code from the previous example
//       // ...
//       const button = new ButtonView();
//       button.set({
//         label: '上传视频',
//         icon: Icon,
//         // keystroke,
//         tooltip: true
//       });
//       // editor.commands.add('uploadVideo', new UploadVideoCommand(editor));

//       // Execute a callback function when the button is clicked.
//       button.on('execute', () => {

//         // Change the model using the model writer.



//         editor.model.change(writer => {

//           const RESOURCE_URL = 'https://api2.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT';
//           const externalWidget = writer.createElement(
//             'uploadVideo', {
//               ...Object.fromEntries(selection.getAttributes()),
//               'data-resource-url': RESOURCE_URL
//             }
//           );

//           editor.model.insertObject(externalWidget, null, null, {
//             setSelection: 'on'
//           });

//         });



//         // editor.model.change(writer => {
//         //   let input = document.createElement('input')
//         //   input.style.display = 'none'
//         //   input.type = 'file'
//         //   document.body.appendChild(input)
//         //   input.click()

//         // });
//       });

//       return button;
//     });


//   }

//   _defineSchema() {
//     const schema = this.editor.model.schema;
//     schema.register('uploadVideo', {
//       isInline: true, // 是否为行内元素
//       isObject: true, // 是否为一个整体
//       allowWhere: "$text", // 允许在哪个 schema 插入
//       allowAttributes: ["src"], // 允许携带哪些属性
//     });
//   }
//   _defineConverters() {
//     const editor = this.editor;

//     editor.conversion.for('upcast').elementToElement({
//       view: {
//         name: 'span',
//         attributes: ['data-resource-url']
//       },
//       model: (viewElement, {
//         writer
//       }) => {
//         const externalUrl = viewElement.getAttribute('data-resource-url');

//         return writer.createElement('uploadVideo', {
//           'data-resource-url': externalUrl
//         });
//       }
//     });

//     editor.conversion.for('dataDowncast').elementToElement({
//       model: 'uploadVideo',
//       view: (modelElement, {
//         writer
//       }) => {
//         return writer.createEmptyElement('span', {
//           'data-resource-url': modelElement.getAttribute('data-resource-url')
//         });
//       }
//     });

//     editor.conversion.for('editingDowncast').elementToElement({
//       model: 'uploadVideo',
//       view: (modelElement, {
//         writer
//       }) => {

//         let input = document.createElement('input')
//           input.style.display = 'none'
//           input.type = 'file'
//           document.body.appendChild(input)
//           input.click()
//           input.onchange=()=>{
//               console.log('上传文件');
//           }



//         const externalValueToShow = this.externalDataValue;

//         const externalDataPreviewElement = writer.createRawElement('span', null, function (domElement) {
//           domElement.classList.add('uploadVideo-data-widget');
//           domElement.textContent = externalValueToShow || 'Fetching data...';

//           if (externalValueToShow) {
//             domElement.classList.add('uploadVideo-data-widget-bounce');
//             setTimeout(() => domElement.classList.remove('uploadVideo-data-widget-bounce'), 1100);
//           }
//         });

//         const externalWidgetContainer = writer.createContainerElement('span', null, externalDataPreviewElement);

//         return toWidget(externalWidgetContainer, writer, {
//           label: 'External widget'
//         });
//       }
//     });
//   }
// }
// export default UploadVideo
